Distributed computing systems are increasingly being utilized to support business as well as technical applications. Typically, distributed computing systems are constructed from a collection of computing nodes that combine to provide a set of processing services to implement distributed computing applications. Each of the computing nodes in the distributed computing system is typically a separate, independent computing device interconnected with each of the other computing nodes via a communications medium, e.g., a network.
One challenge with distributed computing systems is the programmatic control of power to the computing nodes. With programmatic power control, a control node of the distributed computing system can, for example, power-up, power-down, and power cycle computing nodes without an administrator having to physically interact with the controlled computing nodes. An administrator of the distributed computing environment may need programmatic power control functions for a variety of purposes. For instance, the administrator may want the distributed computing system to power-down a computing node in which an application has become non-responsive.
Differing specifications and communications protocols complicate the task of programmatic power control. A distributed computing system may be composed of computing nodes manufactured by various vendors. Vendors equip some of the computing nodes with special power control hardware units. The power control hardware units facilitate remote power control over the managed nodes. However, power control hardware units supplied by one vendor are frequently incompatible with power control hardware units supplied by a second vendor. This is because each vendor may use a different protocol to facilitate communication with power control hardware unit or a different instruction set within the power control hardware unit. For instance, the power control hardware units manufactured by a first vendor may use secure shell (“SSH”) commands to communicate with a control node while a second vendor may use telnet.
Traditionally, administrators of distributed computing systems have overcome these differences in vendor specifications by creating custom software modules for each type of power control hardware unit. This approach has numerous disadvantages. For instance, writing and debugging multiple software modules is time consuming and expensive. The fact that vendors frequently upgrade the firmware installed on power control hardware units further magnifies expenses. With each upgrade of the power control firmware, the administrators of the distributed computing system must test the power control hardware units to guarantee that the custom software modules written to support the power control hardware units work with the latest revision of the power control firmware.